/************************************************************
	File:		IEntity.h
	Author:		Mitchel Mishiev, Keisuke Miyazaki
	Purpose:	IEntity interface class is the base class for
				all entities, declaring the shared methods.
************************************************************/
#ifndef IENTITY_H_
#define IENTITY_H_

#define WIN32_LEAN_AND_MEAN
#include <Windows.h>

///////////////////////////////////////////////////////////
// IEntity class
//	- abstract base class for game entities
class IEntity
{
public:

	virtual ~IEntity(void) = 0
	{
	}

	virtual void	Update( float fElapsedTime )										= 0; 	// updates the entity
	virtual void	Render( void )														= 0; 	// draws the entity
	
	virtual RECT	GetRect( void ) const												= 0;	// return bounding box
	virtual int		GetType( void ) const												= 0;	// return the entity's type

	virtual bool	CheckCollision( const IEntity* pEntity1, const IEntity* pEntity2  )	= 0;	// handle collision against other entities
	virtual	void	HandleCollision( const IEntity* pOther )							= 0;
	
	// Reference Counting
	virtual void AddRef( void )					= 0;
	virtual void Release( void )				= 0;
};

#endif //IENTITY_H_